package oop.core.skill;

import oop.core.visitors.InteractiveVisitor;

/**
 * InteractiveSkill subtype of Skill, and can't be instantiated.
 * All subtypes must implement the accept(Visitor v) method.
 */
public abstract class InteractiveSkill extends Skill implements InteractiveVisitable, Cloneable {
	
	/**
	 * Constructor for InteractiveSkill.
	 * @param name
	 * @param skillLevel
	 */
	protected InteractiveSkill(String name, int skillLevel) {
		super(name, skillLevel);
	}
	
	/**
	 * Subtypes must implement this method to accept and 
	 * InteractiveVisitor object.
	 */
	public abstract void accept(InteractiveVisitor v);
	
	/**
	 * Implement clone.
	 */
	public InteractiveSkill clone(){
		InteractiveSkill cloned = (InteractiveSkill)super.clone();
		return cloned;
	}
}
